Skip to content

Test suite does not resolve against master of its siblings ([sources] path, ProximalSolvers compat) - #16

Merged
mlakolar merged 2 commits into
masterfrom
fix/issue-15
Oct 29, 2026
Merged

mlakolar merged 2 commits into
masterfrom
fix/issue-15

Conversation

@mlakolar

Copy link
Copy Markdown
Owner

Closes #15

Makes the package and its exper/ and benchmark/compare/new/ environments resolve against the sibling masters: [sources] and the CI dependency script point at the renamed ProximalSolvers.jl checkout, and the ProximalSolvers compat admits 0.3. Then runs the suite against ProximalBase master, which now requires exactly symmetric writes into a SymmetricSparseIterate, and fixes any write it breaks.

Work in progress. This PR is the record of the run: the plan, each review round, the verification (what ran where, at which commit), and the final report are posted as comments.

@mlakolar

Copy link
Copy Markdown
Owner Author

Plan

Drafted by Claude, critiqued by Codex (codex-plan-review-01, read-only), revised. Awaiting approval before implementation.

Base commit: 6ba332c (master).

What reproduced

  • [sources] in Project.toml points ProximalSolvers at ../ProximalOPT.jl. That directory no longer exists in the workspace; the checkout is ../ProximalSolvers.jl. The same stale path is in exper/Project.toml (../../ProximalOPT.jl) and benchmark/compare/new/Project.toml (../../../../ProximalOPT.jl).
  • scripts/master_dependencies.jl:6 maps ProximalSolvers to the folder ProximalOPT.jl. CI therefore clones the ProximalSolvers repository into a folder named ProximalOPT.jl ("Cloning into '…/ProximalOPT.jl'" in every job). That works on a fresh runner but not in the local workspace. CovarianceSelection's copy of the script maps it to ProximalSolvers.jl; it is otherwise identical, and instantiate.jl, test_master.jl and check_naming.py are byte-identical to CovarianceSelection's.
  • Compat. ProximalSolvers = "0.1" excludes ProximalSolvers master (0.3.1) in the same three Project.toml files.
  • CovarianceSelection. Its own compat no longer excludes 0.3.1: #59 there, merged as 1743682, set ProximalSolvers = "0.3". CompatHelper's CompatHelper: bump compat for ProximalSolvers to 0.3, (keep existing compat) #14 here (ProximalSolvers = "0.1, 0.3") had failed for that reason ("restricted to versions 0.2 by CovarianceSelection — no versions left").
  • Full suite against ProximalBase master. I reran CompatHelper: bump compat for ProximalSolvers to 0.3, (keep existing compat) #14's CI (run 40814568392, attempt 2; head a1a1ccd, which is the base plus that compat bump and a cosmetic reformatting of [sources]). It passes 20178/20178 on Linux (lts and 1), macOS and Windows, against CovarianceSelection 1743682, ProximalSolvers 3893fb9, and a ProximalBase master that contains SymmetricSparseIterate: require symmetric values in every write (map! no longer updates twice) ProximalBase.jl#193. ProximalBase master moved during that run, between 1a95d13 and 90fd006, so its exact revision is not recorded. So the suite shows no failure under the exact-symmetry rule on the paths it exercises. If the final CI run shows one, it is fixed in this PR.

Changes

  1. Project.toml, exper/Project.toml, benchmark/compare/new/Project.toml: point ProximalSolvers in [sources] at the ProximalSolvers.jl checkout, keeping each file's relative depth. Set ProximalSolvers = "0.3" in [compat].
  2. scripts/master_dependencies.jl:6: map ProximalSolvers to the folder ProximalSolvers.jl, matching CovarianceSelection's script.
  3. Unchanged:
    • benchmark/compare/old/Project.toml pins historical commits on purpose;
    • the README mentions of ProximalOPT in benchmark/compare/README.md record history;
    • the CovarianceSelection compat ("0.1") already admits its master.

"0.3" rather than CompatHelper's "0.1, 0.3". CovarianceSelection is unregistered and resolvable only from its path checkout, whose master requires ProximalSolvers "0.3", so 0.1 can never resolve here. CovarianceSelection made the same choice.

Task

task-01 (Codex, implementation, no Julia). Owned files: Project.toml, exper/Project.toml, benchmark/compare/new/Project.toml, scripts/master_dependencies.jl.

Pre-registered acceptance criteria

  • A1. The three environments resolve, and each loads ProximalSolvers 0.3.1 from the clone (Claude, local).
    • Each is resolved from a copy whose [sources] point at fixed clones of the sibling masters (ProximalBase 90fd006, ProximalSolvers 3893fb9, CovarianceSelection 1743682), and at the worktree for DiffPrecTest itself.
    • The check does not use the shared sibling checkouts or the repository's wrapper.
  • A2. Each [sources] path for ProximalSolvers, resolved from its file's directory, names the sibling checkout ProximalSolvers.jl next to this repository (Claude, path check).
  • A3. git grep ProximalOPT finds only the history in benchmark/compare/README.md.
  • A4. CI at the final commit passes the full suite on Linux (lts and 1), macOS and Windows against the sibling masters. Its logs show the clone into a folder named ProximalSolvers.jl.
    • Sibling SHAs. CI's logs do not print them, so git ls-remote of each sibling master is read right before the run starts and after it ends. Equal readings identify what CI tested; otherwise the range is reported.

Where checks run

  • Local: resolution and the path checks.
  • CI: the full suite. CI covers it on Linux, so no cluster run. There is no documentation build.
  • Not run: the exper/ simulations and benchmark/compare/, which are campaign scripts outside CI; only their resolution is checked.

Risks

Out of scope

What the critique changed

  • A1's method is now explicit: fixed clones through rewritten [sources]. The shared sibling checkouts are stale, and the repository's wrapper uses them.
  • A4 records the sibling revisions by git ls-remote around the run, since CI's logs carry no SHAs.
  • The symmetry conclusion is narrowed to the paths the suite exercises, and the contingency for a failing write is kept.
  • Rejected: keeping ProximalSolvers 0.1. No resolvable environment can select it, because CovarianceSelection's only source now requires 0.3.

@mlakolar

Copy link
Copy Markdown
Owner Author

Plan approved in self mode: the maintainer asked for this issue to be completed and merged without their review unless a major decision appears. Settings: the plan above, including

  • ProximalSolvers = "0.3" in the package, exper/ and benchmark/compare/new/;
  • the [sources] and CI dependency-script fixes;
  • CI as the full-suite check, plus local resolution of the three environments against fixed sibling clones.

…vers 0.3

ProximalSolvers was renamed from ProximalOPT, and its sibling checkout is now
ProximalSolvers.jl. Point [sources] in the package, exper/ and
benchmark/compare/new/ at it, and map it to that folder in the CI dependency
script, as CovarianceSelection does. Raise the ProximalSolvers compat to 0.3:
CovarianceSelection master, the only source of that dependency, requires it.
@codecov

codecov Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.62%. Comparing base (6ba332c) to head (85d81e8).

Additional details and impacted files
@@           Coverage Diff           @@
##           master      #16   +/-   ##
=======================================
  Coverage   99.62%   99.62%           
=======================================
  Files          14       14           
  Lines        1328     1328           
=======================================
  Hits         1323     1323           
  Misses          5        5           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@mlakolar mlakolar left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review round 1 (implementation, commit 85d81e8)

Findings are based on the diff and on checks run here, not on the agent's report.

Diff. 4 files, 7 insertions and 7 deletions, exactly the plan's lines:

  • the ProximalSolvers [sources] path and compat in Project.toml, exper/Project.toml and benchmark/compare/new/Project.toml;
  • the folder name in scripts/master_dependencies.jl.

Verified at 85d81e8:

  • Paths (A2). Each ProximalSolvers [sources] path, resolved from its file's directory, reaches the ProximalSolvers.jl checkout next to this repository.
  • Stale names (A3). git grep ProximalOPT finds only the history in benchmark/compare/README.md. scripts/master_dependencies.jl is now identical to CovarianceSelection's.
  • Resolution (A1). The package, exper/ and benchmark/compare/new/ resolve against fixed clones of the sibling masters. Each loads ProximalSolvers 0.3.1, ProximalBase 0.5.4 and CovarianceSelection 0.1.0 from the clones.
  • CI (A4). The full suite passes 20178/20178 on Linux (lts and 1), macOS and Windows, and Codecov passes. Every job clones ProximalSolvers into a folder named ProximalSolvers.jl. The sibling masters were the same before and after the run (ProximalBase 90fd006, ProximalSolvers 3893fb9, CovarianceSelection 1743682), so those are the revisions tested. ProximalBase 90fd006 contains mlakolar/ProximalBase.jl#193.

Requested changes: none.

@mlakolar

Copy link
Copy Markdown
Owner Author

Run report

What changed

Baseline 6ba332c → final 85d81e8: 4 files, 7 insertions and 7 deletions.

  • Project.toml, exper/Project.toml, benchmark/compare/new/Project.toml: ProximalSolvers in [sources] points at the ProximalSolvers.jl checkout instead of the old ProximalOPT.jl name, and the compat is ProximalSolvers = "0.3".
  • scripts/master_dependencies.jl: CI clones ProximalSolvers into a folder named ProximalSolvers.jl. The script is now identical to CovarianceSelection's.

No source or test file changed. The full suite already passes against ProximalBase master, which contains mlakolar/ProximalBase.jl#193.

What was verified where

check where commit job result
full suite at base plus the compat bump, against the sibling masters (rerun of #14's checks) CI (Linux lts and 1, macOS, Windows) a1a1ccd (#14) 40814568392, attempt 2 20178/20178 on each job
[sources] paths, stale names, script parity local 85d81e8 – all three paths reach the ProximalSolvers.jl checkout; ProximalOPT only in README history; script identical to CovarianceSelection's
resolution of the package, exper/ and benchmark/compare/new/ against fixed sibling clones local 85d81e8 – all resolve; ProximalSolvers 0.3.1, ProximalBase 0.5.4, CovarianceSelection 0.1.0 from the clones
full suite and Codecov CI (Linux lts and 1, macOS, Windows) 85d81e8 40955743184 20178/20178 on each job; Codecov passes; ProximalSolvers cloned into ProximalSolvers.jl

Sibling revisions.

  • Final run: the sibling masters were identical right before and after it: ProximalBase 90fd006, ProximalSolvers 3893fb9, CovarianceSelection 1743682.
  • Local checks: they used clones at the same commits.
  • Probe run: ProximalBase master moved during it, so its exact revision is not recorded.

Criteria: A1 (resolution), A2 (paths), A3 (no stale names) and A4 (CI) are all met.

Open limitations

  • exper/ and benchmark/compare/new/ are campaign environments outside CI. Only their resolution was checked.
  • ProximalSolvers 0.1 is no longer admitted. No environment could select it, because CovarianceSelection, the only source of that dependency, requires 0.3.
  • The suite passing means no failure on the paths it exercises. It does not prove that every write in the package is exactly symmetric.

Follow-up issues

@mlakolar
mlakolar marked this pull request as ready for review October 29, 2026 21:28
@mlakolar
mlakolar merged commit ff5f432 into master Oct 29, 2026
6 checks passed
@mlakolar
mlakolar deleted the fix/issue-15 branch October 29, 2026 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test suite does not resolve against master of its siblings ([sources] path, ProximalSolvers compat)

1 participant